#Boa:Dialog:Dialog1

import wx
import wx.grid
import utiles
import consultasBD

GRIS = ( 220, 220, 220, 255)
NEGRO = ( 0, 0, 0, 255)
VERDENEGRO = ( 47, 79, 79, 255)

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1BUTTON1, wxID_DIALOG1BUTTON2, wxID_DIALOG1BUTTON3, 
 wxID_DIALOG1COMBOBOX1, wxID_DIALOG1DATEPICKERCTRL1, wxID_DIALOG1GRID1, 
 wxID_DIALOG1STATICTEXT1, wxID_DIALOG1STATICTEXT2, wxID_DIALOG1STATICTEXT3, 
 wxID_DIALOG1STATICTEXT4, wxID_DIALOG1STATICTEXT5, wxID_DIALOG1STATICTEXT6, 
 wxID_DIALOG1TEXTCTRL1, wxID_DIALOG1TEXTCTRL2, 
] = [wx.NewId() for _init_ctrls in range(15)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(229, 54), size=wx.Size(849, 485),
              style=wx.DEFAULT_DIALOG_STYLE,
              title='Detalle de Facturacion por Fecha')
        self.SetClientSize(wx.Size(841, 458))

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label='Fecha', name='staticText1', parent=self, pos=wx.Point(24,
              8), size=wx.Size(29, 13), style=0)

        self.grid1 = wx.grid.Grid(id=wxID_DIALOG1GRID1, name='grid1',
              parent=self, pos=wx.Point(8, 40), size=wx.Size(824, 408),
              style=0)

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2, label='',
              name='staticText2', parent=self, pos=wx.Point(176, 8),
              size=wx.Size(0, 16), style=0)
        self.staticText2.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD,
              False, 'Tahoma'))

        self.button1 = wx.Button(id=wxID_DIALOG1BUTTON1, label='Imprimir',
              name='button1', parent=self, pos=wx.Point(672, 8),
              size=wx.Size(75, 23), style=0)
        self.button1.Bind(wx.EVT_BUTTON, self.OnImprimir,
              id=wxID_DIALOG1BUTTON1)

        self.button2 = wx.Button(id=wxID_DIALOG1BUTTON2, label='Salir',
              name='button2', parent=self, pos=wx.Point(760, 8),
              size=wx.Size(72, 23), style=0)
        self.button2.Bind(wx.EVT_BUTTON, self.OnCancelar,
              id=wxID_DIALOG1BUTTON2)

        self.datePickerCtrl1 = wx.DatePickerCtrl(id=wxID_DIALOG1DATEPICKERCTRL1,
              name='datePickerCtrl1', parent=self, pos=wx.Point(64, 8),
              size=wx.Size(88, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.staticText3 = wx.StaticText(id=wxID_DIALOG1STATICTEXT3,
              label='Total', name='staticText3', parent=self, pos=wx.Point(288,
              8), size=wx.Size(24, 13), style=0)

        self.textCtrl1 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL1, name='textCtrl1',
              parent=self, pos=wx.Point(352, 8), size=wx.Size(32, 21), style=0,
              value='')
        self.textCtrl1.SetEditable(False)
        self.textCtrl1.SetAutoLayout(False)

        self.textCtrl2 = wx.TextCtrl(id=wxID_DIALOG1TEXTCTRL2, name='textCtrl2',
              parent=self, pos=wx.Point(408, 8), size=wx.Size(92, 21), style=0,
              value='')
        self.textCtrl2.SetEditable(False)

        self.staticText5 = wx.StaticText(id=wxID_DIALOG1STATICTEXT5,
              label='Suc.', name='staticText5', parent=self, pos=wx.Point(504,
              8), size=wx.Size(21, 13), style=0)
        self.staticText5.Show(False)

        self.comboBox1 = wx.ComboBox(choices=[], id=wxID_DIALOG1COMBOBOX1,
              name='comboBox1', parent=self, pos=wx.Point(528, 8),
              size=wx.Size(130, 21), style=0, value='')
        self.comboBox1.SetLabel('')
        self.comboBox1.Show(False)
        self.comboBox1.Bind(wx.EVT_COMBOBOX, self.OnCambiaContenido,
              id=wxID_DIALOG1COMBOBOX1)

        self.staticText4 = wx.StaticText(id=wxID_DIALOG1STATICTEXT4,
              label='documentos', name='staticText4', parent=self,
              pos=wx.Point(288, 24), size=wx.Size(58, 13), style=0)

        self.staticText6 = wx.StaticText(id=wxID_DIALOG1STATICTEXT6, label='$',
              name='staticText6', parent=self, pos=wx.Point(392, 8),
              size=wx.Size(6, 13), style=0)

        self.button3 = wx.Button(id=wxID_DIALOG1BUTTON3, label='Buscar',
              name='button3', parent=self, pos=wx.Point(160, 8),
              size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnBuscar, id=wxID_DIALOG1BUTTON3)

    def __init__(self, parent):
        self._init_ctrls(parent)
        if parent.loginRol in ['root','contable']:
            self.staticText5.Show(True)
            self.comboBox1.Show(True)
            self.cargarSucursal()
        #este es el indice utilizado para conectarse remotamente a las sucursales
        self.indice = int(utiles.getSucursalActiva()) - 1
        self.conecta = True
        self.crearGrilla()
        self.llenarGrilla()

    def cargarSucursal(self):
        sucursal = utiles.getSucursalActiva()
        SQL = "SELECT nombre FROM sucursales WHERE codsucursal='%s'" % (sucursal)
        resultado = consultasBD.ordenCrudaDict(SQL)
        self.comboBox1.SetLabel(resultado[0]['nombre'])
        SQL = "SELECT nombre FROM sucursales"
        resultado = consultasBD.ordenCrudaDict(SQL)
        for i,item in enumerate(resultado):
            self.comboBox1.Append(item["nombre"])

    def crearGrilla(self):
        self.grid1.CreateGrid(1, 11)
        self.grid1.AutoSizeColumn(0,True)
        self.grid1.AutoSizeColumn(1,True)
        self.grid1.AutoSizeColumn(2,True)
        self.grid1.AutoSizeColumn(3,True)
        self.grid1.AutoSizeColumn(4,True)
        self.grid1.AutoSizeColumn(5,True)
        self.grid1.AutoSizeColumn(6,True)
        self.grid1.AutoSizeColumn(7,True)
        self.grid1.AutoSizeColumn(8,True)
        self.grid1.AutoSizeColumn(9,True)
        self.grid1.AutoSizeColumn(10,True)

    def obtenerNombreCliente(self, idcliente):
        consultaSQL = "SELECT nombre FROM cliente WHERE idcliente='"+str(idcliente)+"'"
        nombreCliente,conecta = consultasBD.ordenCrudaDictRemota(consultaSQL,self.indice,False)
        if not conecta:
            self.conecta = conecta
            utiles.mensaje(None,"Sin conexion con sucursal\n"+self.comboBox1.GetLabel())
            return
        return nombreCliente

    def obtenerFacturasClientes(self):
        fecha = str(self.datePickerCtrl1.GetValue()).split()[0]
        fecha = fecha[3:5]+"-"+fecha[0:2]+"-20"+fecha[-2:]
        self.miFecha = fecha
        fecha = utiles.invertirFecha(fecha)
        print "Fecha procesada: ",fecha
        r1 = "SELECT idventa,nrofactura,fecha,idcliente,descuento,totalfactura,usuario,idformaticket "
        r2 = "FROM ventas WHERE fecha LIKE '%"+fecha+"%' ORDER BY fecha DESC"
        consultaSQL = r1 + r2
        resultado,conecta = consultasBD.ordenCrudaDictRemota(consultaSQL,self.indice)
        if not conecta:
            self.conecta = conecta
            utiles.mensaje(None,"Sin conexion con sucursal\n"+self.comboBox1.GetLabel())
            return
        self.textCtrl1.SetValue(str(len(resultado)))
        consultaSQL = "SELECT sum(totalfactura) as total FROM ventas WHERE fecha LIKE '%"+fecha+"%'"
        total,conecta = consultasBD.ordenCrudaDictRemota(consultaSQL,self.indice)
        if not conecta:
            self.conecta = conecta
            utiles.mensaje(None,"Sin conexion con sucursal\n"+self.comboBox1.GetLabel())
            return
        total = total[0]['total']
        self.textCtrl2.SetValue(str(total))
        return resultado

    def obtenerNombreVendedora(self,vendedora):
        consultaSQL = "SELECT nombre FROM vendedoras WHERE idvendedora='"+str(vendedora)+"'"
        return consultasBD.ordenCruda(consultaSQL)

    def obtenerItemsFacturasClientes(self,idventa):
        r1 = "SELECT ptc,descri,talle,color,cantidad,preciolista,descuento,preciofinal "                        
        r2 = "FROM ventastieneproductos WHERE idticket='"+idventa+"' "
        consultaSQL = r1 + r2
        facturas,conecta = consultasBD.ordenCrudaDictRemota(consultaSQL,self.indice,False)
        if not conecta:
            self.conecta = conecta
            utiles.mensaje(None,"Sin conexion con sucursal\n"+self.comboBox1.GetLabel())
            return
        return facturas

    def obtenerCodSussanItem(self,ptc=""):
        consultaSQL = "SELECT codsussan FROM producto_talle_color WHERE id='"+str(ptc)+"'"
        resultado = consultasBD.ordenCrudaDict(consultaSQL)
        if resultado is None:
            return "-"
        else:
            return resultado

    def obtenerPagoEfectivo(self,idventa=""):
        r1 = "SELECT idventa,idformapagos,descrivalor,monto,cuotas,nrorecibo "
        r2 = "FROM ventastienepagos WHERE idventa='"+str(idventa)+"'"
        consultaSQL = r1 + r2
        pagoEfectivo,conecta = consultasBD.ordenCrudaDictRemota(consultaSQL,self.indice,False)
        if not conecta:
            self.conecta = conecta
            utiles.mensaje(None,"Sin conexion con sucursal\n"+self.comboBox1.GetLabel())
            return
        return pagoEfectivo

    def obtenerPagoCtasCtes(self,idventa=""):
        r1 = "SELECT idventa,vencimiento,idformapagos,descripcion,cuota,montocuota,montopagado,idrecibo "
        r2 = "FROM vtas_ctasctes WHERE idventa='"+str(idventa)+"'"
        consultaSQL = r1 + r2
        pagoCtaCte,conecta = consultasBD.ordenCrudaDictRemota(consultaSQL,self.indice,False)
        if not conecta:
            self.conecta = conecta
            utiles.mensaje(None,"Sin conexion con sucursal\n"+self.comboBox1.GetLabel())
            return
        return pagoCtaCte

    def facturaEncabezado(self,renglon,item):
        #datos cabecera: factura, fecha
        self.grid1.AppendRows(1)
        self.grid1.SetCellValue(renglon, 0, "Cliente")
        self.grid1.SetCellValue(renglon, 1, str(item['idcliente']))
        nombre = self.obtenerNombreCliente(item['idcliente'])[0]
        if not self.conecta: return
        self.grid1.SetCellValue(renglon, 2, str(nombre['nombre']))
        for col in xrange(11):
            self.grid1.SetCellBackgroundColour(renglon, col, GRIS)

        renglon = renglon + 1
        self.grid1.AppendRows(1)
        self.grid1.SetCellValue(renglon, 0, "Fecha")
        fecha = str(item['fecha'])
        fecha = fecha[8:10]+"-"+fecha[5:7]+"-"+fecha[0:4]
        self.grid1.SetCellValue(renglon, 1, fecha)
        self.grid1.SetCellValue(renglon, 2, "Factura/NC: "+str(item['nrofactura'])+" Ticket: "+str(item['idventa']))
        self.grid1.SetCellValue(renglon, 3, "$")
        self.grid1.SetCellAlignment(renglon, 3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 4, str(item['totalfactura']))
        for col in xrange(11):
            self.grid1.SetCellBackgroundColour(renglon, col, GRIS)

    def facturaCuerpoEncabezado(self,renglon):
        colortexto = VERDENEGRO
        self.grid1.AppendRows(1)
        self.grid1.SetCellValue(renglon, 0,"PTC")
        self.grid1.SetCellTextColour(renglon, 0, colortexto)
        self.grid1.SetCellValue(renglon, 1,"CODIGO")
        self.grid1.SetCellTextColour(renglon, 1, colortexto)
        self.grid1.SetCellValue(renglon, 2,"DESCRIPCION")
        self.grid1.SetCellTextColour(renglon, 2, colortexto)
        self.grid1.SetCellValue(renglon, 3,"Talle")
        self.grid1.SetCellTextColour(renglon, 3, colortexto)
        self.grid1.SetCellAlignment(renglon, 3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 4,"Color")
        self.grid1.SetCellTextColour(renglon, 4, colortexto)
        self.grid1.SetCellAlignment(renglon, 4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 5,"Cant.")
        self.grid1.SetCellTextColour(renglon, 5, colortexto)
        self.grid1.SetCellAlignment(renglon, 5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 6,"Precio")
        self.grid1.SetCellTextColour(renglon, 6, colortexto)
        self.grid1.SetCellAlignment(renglon, 6, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 7,"Subtotal")
        self.grid1.SetCellTextColour(renglon, 7, colortexto)
        self.grid1.SetCellAlignment(renglon, 7, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 8,"Desc %")
        self.grid1.SetCellTextColour(renglon, 8, colortexto)
        self.grid1.SetCellAlignment(renglon, 8, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 9,"TOTAL")
        self.grid1.SetCellTextColour(renglon, 9, colortexto)
        self.grid1.SetCellAlignment(renglon, 9, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 10,"Modista")
        self.grid1.SetCellAlignment(renglon, 10, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)

    def facturaCuerpo(self,renglon,item,codsussan="-"):
        #datos cuerpo: ptc,codigo,descripcion,talle,color,cant,unitario,subtotal,desc,total,modista
        self.grid1.AppendRows(1)
        self.grid1.SetCellValue(renglon, 0,str(item['ptc']))
        self.grid1.SetCellValue(renglon, 1,str(codsussan))
        self.grid1.SetCellValue(renglon, 2,str(item['descri']))
        self.grid1.SetCellValue(renglon, 3,str(item['talle']))
        self.grid1.SetCellAlignment(renglon, 3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 4,str(item['color']))
        self.grid1.SetCellAlignment(renglon, 4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 5,str(item['cantidad']))
        self.grid1.SetCellAlignment(renglon, 5, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 6,str(item['preciolista']))
        self.grid1.SetCellAlignment(renglon, 6, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 7,str(item['cantidad']*item['preciolista']))
        self.grid1.SetCellAlignment(renglon, 7, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 8,str(item['descuento']))
        self.grid1.SetCellAlignment(renglon, 8, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 9,str(item['preciofinal']))
        self.grid1.SetCellAlignment(renglon, 9, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)

    def pagosEncabezado(self,renglon):
        colortexto = VERDENEGRO
        self.grid1.AppendRows(1)
        self.grid1.SetCellValue(renglon, 1,"Nro Recibo")
        self.grid1.SetCellTextColour(renglon, 1, colortexto)
        self.grid1.SetCellValue(renglon, 2,"DESCRIPCION")
        self.grid1.SetCellTextColour(renglon, 2, colortexto)
        self.grid1.SetCellValue(renglon, 3,"Cuotas")
        self.grid1.SetCellAlignment(renglon, 3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 4,"$ CUOTA")
        self.grid1.SetCellTextColour(renglon, 4, colortexto)
        self.grid1.SetCellAlignment(renglon, 4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        
    def pagosDetalle(self,renglon,item):
        self.grid1.AppendRows(1)
        self.grid1.SetCellValue(renglon, 1,str(item['nrorecibo']))
        self.grid1.SetCellValue(renglon, 2,str(item['idformapagos'])+" / "+str(item['descrivalor']))
        self.grid1.SetCellValue(renglon, 3,str(item['cuotas']))
        self.grid1.SetCellAlignment(renglon, 3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 4,str(item['monto']))
        self.grid1.SetCellAlignment(renglon, 4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)

    def renglonVendedora(self,renglon,vendedora,tipo):
        self.grid1.AppendRows(1)
        self.grid1.SetCellValue(renglon, 1,"Vendedora")
        self.grid1.SetCellBackgroundColour(renglon, 1, GRIS)
        self.grid1.SetCellValue(renglon, 2,vendedora)
        self.grid1.SetCellBackgroundColour(renglon, 2, GRIS)
        self.grid1.SetCellValue(renglon, 3,"Tipo: ")
        self.grid1.SetCellBackgroundColour(renglon, 3, GRIS)
        self.grid1.SetCellAlignment(renglon, 3, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)
        self.grid1.SetCellValue(renglon, 4,str(tipo))
        self.grid1.SetCellBackgroundColour(renglon, 4, GRIS)
        self.grid1.SetCellAlignment(renglon, 4, wx.ALIGN_LEFT, wx.ALIGN_CENTRE)
        
    def pagosEncabezadoCtaCte(self,renglon):
        colortexto = VERDENEGRO
        self.grid1.AppendRows(1)
        self.grid1.SetCellValue(renglon, 1,"CTA.CTE.")
        self.grid1.SetCellBackgroundColour(renglon, 1, GRIS)
        self.grid1.AppendRows(1)
        renglon = renglon + 1
        self.grid1.SetCellValue(renglon, 1,"Cuota")
        self.grid1.SetCellTextColour(renglon, 1, colortexto)
        self.grid1.SetCellValue(renglon, 2,"Vencimiento / Forma pago")
        self.grid1.SetCellTextColour(renglon, 2, colortexto)
        self.grid1.SetCellValue(renglon, 4,"Monto")
        self.grid1.SetCellTextColour(renglon, 4, colortexto)
        self.grid1.SetCellAlignment(renglon, 4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)

    def pagosDetalleCtaCte(self,renglon,item):
        self.grid1.AppendRows(1)
        self.grid1.SetCellValue(renglon, 1,str(item['cuota']))
        self.grid1.SetCellValue(renglon, 2,str(item['vencimiento'])+" / "+str(item['idformapagos']))
        self.grid1.SetCellValue(renglon, 4,str(item['montocuota']))
        self.grid1.SetCellAlignment(renglon, 4, wx.ALIGN_RIGHT, wx.ALIGN_CENTRE)

    def llenarGrilla(self):
        renglon = 0
        listadoFacturas = self.obtenerFacturasClientes()
        if not self.conecta: return
        for factura in listadoFacturas:
            #datos cabecera: factura, fecha
            self.facturaEncabezado(renglon,factura)
            renglon = renglon + 2

            listadoItems = self.obtenerItemsFacturasClientes(str(factura['idventa']))
            if not self.conecta: return

            self.facturaCuerpoEncabezado(renglon)
            renglon = renglon + 1

            for item in listadoItems:
                #datos cuerpo: ptc,codigo,descripcion,talle,color,cant,unitario,subtotal,desc,total,modista
                #codsussan = str(self.obtenerCodSussanItem(item['ptc'])[0]['codsussan'])
                codsussan = self.obtenerCodSussanItem(item['ptc'])
                if codsussan == (): codsussan = ({'codsussan':""},)
                codsussan = codsussan[0]['codsussan']
                self.facturaCuerpo(renglon,item,codsussan)
                renglon = renglon + 1

            vendedora = self.obtenerNombreVendedora(factura['usuario'])[0][0]
            tipo = str(factura['idformaticket'])
            self.renglonVendedora(renglon,vendedora,tipo)
            renglon = renglon + 1

            #datos pie: forma,descripcion,cuotas,valor cuota,total
            listadoPagosEfectivo = self.obtenerPagoEfectivo(str(factura['idventa']))
            if not self.conecta: return
            if listadoPagosEfectivo is not ():
                self.pagosEncabezado(renglon)
                renglon = renglon + 1
                for item in listadoPagosEfectivo:
                    self.pagosDetalle(renglon,item)
                    renglon = renglon + 1

            listadoPagosCtasCtes = self.obtenerPagoCtasCtes(str(factura['idventa']))
            if not self.conecta: return
            if listadoPagosCtasCtes is not ():
                self.pagosEncabezadoCtaCte(renglon)
                renglon = renglon + 2
                for item in listadoPagosCtasCtes:
                    self.pagosDetalleCtaCte(renglon,item)
                    renglon = renglon + 1

            #agrega renglon en blanco separador
            renglon = renglon + 1
            self.grid1.AppendRows(1)

        for col in xrange(11):
            self.grid1.AutoSizeColumn(col,True)

        self.grid1.Refresh()

        return

    def OnImprimir(self, event):
        titulo1 = "DETALLE DE FACTURAS EMITIDAS PARA LA FECHA "+self.miFecha
        
        fil = self.grid1.GetNumberRows()
        col = self.grid1.GetNumberCols()
        self.button1.Enable(False)
        self.button1.SetLabel("IMPRIMIENDO")
        utiles.reporte3_html(titulo1,fil,col,self.grid1)
        self.button1.SetLabel("Imprimir")
        self.button1.Enable(True)

    def OnCancelar(self, event):
        self.Close()

    def limpiarGrilla(self):
        self.grid1.ClearGrid()
        self.grid1.Refresh()
        totalfilas = self.grid1.GetNumberRows()
        for renglon in xrange(totalfilas,0,-1):
            self.grid1.DeleteRows(renglon-1)
        self.grid1.Refresh()

    def OnCambiaContenido(self, event):
        self.limpiarGrilla()
        nombreSucursal = self.comboBox1.GetLabel()
        sql = "SELECT codsucursal FROM sucursales WHERE nombre='"+nombreSucursal+"'"
        codigoSucursal = int(consultasBD.ordenCruda(sql)[0][0])-1
        print "Nueva sucursal: ",codigoSucursal,nombreSucursal
        self.indice = codigoSucursal
        self.OnCambiaFecha(None)

    def OnBuscar(self, event):
        self.conecta = True
        self.limpiarGrilla()
        self.llenarGrilla()
